class Solution {
public:
    void duplicateZeros(vector<int>& arr) {
        int left = -1, right = 0, size = arr.size();
        while(right < size) // 找到最后一个数
        {
            if(arr[right] != 0)
            {
                left++;
            }
            else
            {
                left += 2;
            }
            if(left >= size - 1)
            {
                break;
            }
            right++;
        }
 
        if(left == size) // 处理边界情况
        {
            arr[size - 1] = 0;
            right --;
            left -= 2;
        }
 
        while(right >= 0) // 从右往左复写
        {
            if(arr[right] != 0)
            {
                arr[left--] = arr[right--];
            }
            else
            {
                arr[left--] = 0;
                arr[left--] = 0;
                right--;
            }
        }
    }
};